#include "widget.h"

#include <QApplication>
#include <QMessageBox>
#include <QSharedMemory>

QString transFileName;  //参数传递的待处理文件名
QSharedMemory shareU;    //共享内存控制单例程序启动
QSharedMemory shareC;    //共享内存控制单例程序启动

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


     shareU.setKey("_clinic_rensheng_update_");
     shareC.setKey("_clinic_rensheng_");

    //测试共享内存是否存在，存在则退出
    if( shareC.attach())
    {
        QMessageBox::warning(NULL, "注意", "应用程序正在运行，版本管理无法启动！");
        //shareC.detach();
        return 0;
    }

    if( shareU.attach())
    {
        QMessageBox::warning(NULL, "注意", "版本管理程序正在运行，无法再次启动！");
        //shareU.detach();
        return 0;
    }
    else
    {
        //创建共享内存
        if(! shareU.create(1))
        {
            QMessageBox::warning(NULL, "注意", "无法创建共享内存，程序启动失败！");
            return 0;
        }
        else
        {
            if( shareU.lock())
            {
                char * d = (char *) shareU.data();
                *d = '0';
                shareU.unlock();
            }
            else
            {
                QMessageBox::warning(NULL, "注意", "无法锁定共享内存，程序启动失败！");
                return 0;
            }
        }
    }

    //没有第二个参数，或第二个参数不为 update，不进行文件传送。防止误动作。
    transFileName = "";
    if(argc == 3){  //命令行带两个参数
        transFileName = argv[2];

        if(transFileName == "update"){    //第二个参数是 "update"
            transFileName = argv[1];      //需要上传的文件
        }else{
            transFileName = "";     //第二个参数不是update, transFileName置空
        }
    }
    else if(argc == 1)  //命令行不带参数
    {
    }
    else
    {
        QMessageBox::warning(NULL, "注意", "启动参数无效！");
        return 0;
    }

    //过滤特殊字符
    for(int n = 0; n<transFileName.length(); n++){
        if(transFileName[n] == '\\'){
            transFileName[n] = '/';
        }
    }

    Widget w;
    w.show();
    return a.exec();
}
